package com.saifan.wyy_ov.utils;

import android.annotation.SuppressLint;
import android.os.AsyncTask;
import android.os.Build;

/**
 * @author WangLi
 * @date 2014年12月4日 下午6:11:52
 * @Description AsyncTask执行工具类
 * @version V1.0
 */

public class TaskUtil {
    /**
     * 执行异步任务
     * <p>
     * android 2.3 及一下使用execute()方法
     * <p>
     * android 3.0 及以上使用executeOnExecutor方法
     * 从 Android 3.0 (API level 11)开始，AsyncTask 又添加了一个新功能，
     让任务可以在多核处理器上工作。使用executeOnExecutor()这个函数来替代 execute()，
     根据系统的CPU情况多个任务可以同时处理。
     * @param task
     * @param params
     */
    @SuppressLint("NewApi")
    public static <Params, Progress, Result> void execute(AsyncTask<Params, Progress, Result> task,
                                                          Params... params) {
        if (Build.VERSION.SDK_INT >= 11) {
            task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
        } else {
            task.execute(params);
        }
    }
}
